<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    
  </style>
</head>
<body>
  
</body>
<script>
  // 单例模式
  // const obj = {
  //   name:"admin",
  //   age:18,
  //   sex:"男",
  //   sayHello:function(){
  //     console.log("hello 我叫：" + this.name);
  //   }
  // }

  // const obj2 = obj;

  // console.log(obj.name);
  // console.log(obj.age);
  // console.log(obj.sex);
  // obj.sayHello();

  // console.log( obj2 === obj );

  // const obj3 = {
  //   name:"root",
  //   age:20,
  //   sex:"女",
  //   sayHello:function(){
  //     console.log("hello 我叫：" + this.name);
  //   }
  // }

  // 整个项目中可能会多处使用，但不会同时出现多个，同一时间只会有一个功能存在
  // 该功能适合使用单例模式


  // 工厂模式
  function createObj(n, a, s){
    const obj = {};
    obj.name = n;
    obj.age = a;
    obj.sex = s;
    obj.sayHello = function(){
      console.log("hello 我叫：" + this.name);
    }
    return obj;
  }

  const o1 = createObj();
  console.log(o1)
  o1.sayHello()
  const o2 = createObj("张三", 18, "男");
  console.log(o2)
  o2.sayHello()
  const o3 = createObj("李四", 20, "女");
  console.log(o3)
  o3.sayHello()
  const o4 = createObj("王二", 19, "男");
  console.log(o4)
  o4.sayHello()

  // 一个页面中多处存在该功能，且为同时存在，但是每个功能之间相互独立，互不影响
  // 该功能适合使用工厂模式
  
</script>
</html>